package com.dl.mall.service.admin;

import com.alibaba.fastjson.JSONObject;
import com.dl.mall.entity.Page;
import com.dl.mall.entity.Product;
import com.dl.mall.entity.ProductSpecs;
import com.dl.mall.info.BrandInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 产品类管理员服务层
 * @author DL
 * @create 2022-03-23 15:36
 */
public interface ProductService_Admin {

    /* ======================================admin=================================== */

    /**
     * 根据 id 查询产品
     * @param productId 产品id
     * @return 是否存在
     */
    boolean isExistProduct(String productId);

    /**
     * 根据 规格id 更新库存
     * @param specsId 规格id
     * @param specsStock 新库存
     * @return 结果
     */
    boolean modifySpecsStock(String specsId, Integer specsStock);

    /**
     * 根据 规格id 更新状态
     * @param specsId 规格id
     * @param state 状态
     * @return 结果
     */
    boolean modifySpecsState(String specsId, Integer state);

    /**
     * 根据 规格id 更新状态
     * @param productId 规格id
     * @param state 状态
     * @return 结果
     */
    boolean modifyProductState(String productId, Integer state);

    /**
     * 增加产品
     * @param spuJson spu信息
     * @param skuJson sku信息（多个）
     * @param mainImg 主图
     * @param subImg 副图（多个）
     * @param specsImg 规格图（多个）
     * @return 是否成功
     */
    boolean addProduct(String spuJson,
                       String skuJson,
                       MultipartFile mainImg,
                       MultipartFile[] subImg,
                       MultipartFile[] specsImg);

    /**
     * 根据 产品id 获得产品spu信息
     * @param productId 产品id
     * @return 产品spu
     */
    Product getSPU(String productId);

    /**
     * 根据 产品id 获得产品sku信息
     * @param productId 产品id
     * @return 产品sku
     */
    List<ProductSpecs> getSKU(String productId);

    /**
     * 预热商品信息
     * @return 产品sku
     */
    boolean preheat();

    /**
     * 根据 条件 查询产品列表
     * @param jsonObject 条件
     * @return 产品分页
     */
    Page<Product> getProductListByCondition(JSONObject jsonObject);

}
